package com.example.musicplayer;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import androidx.annotation.Nullable;
import java.util.Timer;
import java.util.TimerTask;

public class MusicService extends Service {
    private MediaPlayer player;       //声明媒体播放器
    private Timer timer;              //声明定时器对象
    public MusicService(){  }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new MusicControl();    //Activity绑定到服务会返回MusicControl对象
    }

    @Override
    public void onCreate() {
        super.onCreate();
        player=new MediaPlayer();      //创建音乐播放器对象
    }
    //用户定义方法，用于设置音乐播放器中的播放进度条
    public void addTimer(){
        if(timer==null){
            timer=new Timer();         //创建计数器对象
            TimerTask task=new TimerTask() {     //创建计数器任务对象
                @Override
                public void run() {
                    if(player==null) return;
                    int duration=player.getDuration();                //获取歌曲总时长
                    int currentPosition=player.getCurrentPosition();  //获取歌曲当前播放时长
                    Message msg=MainActivity.handler.obtainMessage(); //创建Message对象msg
                    Bundle bundle=new Bundle();                       //创建bundle对象
                    bundle.putInt("duration",duration);               //将歌曲总时长添加到bundle
                    bundle.putInt("currentPosition",currentPosition); //将歌曲当前播放位置添加到bundle
                    msg.setData(bundle);                              //将bundle装载到msg中
                    MainActivity.handler.sendMessage(msg);  //向MainActivity发送消息：播放总时长和当前位置
                    msg.arg1=1;
                    msg.arg2=2;
                    msg.obj="abc";
                    msg.setData(bundle);
                }
            };
            //开始计时后5毫秒后，第1次执行task任务，以后每500毫秒执行一次，向MainActivity发送消息
            timer.schedule(task,5,500);
        }
    }

    class MusicControl extends Binder {
        public void play(){
            try {
                player.reset();   //重置音乐播放器
                //加载媒体文件
                player=MediaPlayer.create(getApplicationContext(),R.raw.yihulaojiu_jindafeng);
                player.setLooping(true);  //设置循环播放
                player.start();           //开始播放运用
                addTimer();               //执行用户定义方法addTimer(),定时更新滚动条位置和显示时间
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public void pausePlay(){
            player.pause();               //暂停播放音乐
        }
        public void continuePlay(){
            player.start();               //继续播放音乐
        }
        public void seekTo(int progress){
            player.seekTo(progress);      //设置音乐播放从进度条位置
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if(player==null)return;
        if(player.isPlaying())player.stop();    //停止播放音乐
        player.release();                       //是否播放器占用的资源
        player=null;                            //将播放器对象置为空
    }
}
